#ifndef MULTCHANNELHEAD_H
#define MULTCHANNELHEAD_H

#include "IStreamLoadableWritable.h"

enum MCType : uint8_t
{
    Body = 0,
    Shadow = 1,
    Remap = 2,
    Depth = 3,
};

class MultChannelHead : IStreamLoadableWritable
{
public:
    MultChannelHead(int x_, int y_, int w_, int h_, int channelCount_, MCType mcType_);
    MultChannelHead() = default;
    inline const int& GetX() const { return x; };
    inline const int& GetY() const { return y; };
    inline const int& GetW() const { return w; };
    inline const int& GetH() const { return h; };
    inline const int& GetChannelCount() const { return channelCount; };
    inline const MCType& GetMCType() const { return mcType; };
private:
    int x = 0;
    int y = 0;
    int w = 0;
    int h = 0;
    int channelCount = 0;
    MCType mcType = Body;

public:
    bool TryLoad(std::istream& i) final;
    bool TryDump(std::ostream& o) final;
    bool IsDumpable() final;
};


#endif //MULTCHANNELHEAD_H
